Peripheral driver forward compatibility

ABSTRACT

A method ( 200 ) for generating a device driver in an information processing apparatus ( 101 ) for a device connected thereto, such as a printer ( 115 ), is disclosed. The method ( 100 ) obtains a Printer Characterization File (PCF) which contains a characterization of the device ( 115 ) or a group of devices. The device driver is then generated by using the PCF to configure a Device Model Independent Printer Driver (DMIPD) stored with an application on an unchangeable memory, such as a CD-ROM.

TECHNICAL FIELD OF THE INVENTION

[0001] The present invention relates generally to interfacing peripheral devices to video game consoles and, in particular, to managing forward compatibility of peripheral driver software with updated peripheral hardware,

BACKGROUND ART

[0002] The interfacing of peripherals to personal computers (PCs) is a mature art that has well-established methods for dealing with forward compatibility. In the PC industry, a number of manufacturers provide peripherals that are compatible and interchangeable to a high degree. This is possible through the use of open interface standards, and through the mediating role of Operating Systems used with PCs.

[0003] The Operating System (OS) of a PC defines a Device Driver Interface (DDI) for a given class of peripheral. This enables the OS to access a number of peripherals of that class in a consistent and device independent manner. This is possible because the Device Driver (driver) for each peripheral encompasses the functionality of that peripheral and presents it to the OS in accordance with the DDI, so that all peripherals of that class can be interfaced to in essentially the same way.

[0004] The OS also provides an Application Program Interface (API) for application programs. This API encompasses the functionality of the PC (including its peripherals) and presents it to the application programs (applications) as a device independent interface. Hence, the applications are able to run on a PC without regard to what particular configuration of different peripherals is connected to that PC.

[0005] The OS mediates between application programs and peripherals. When a new peripheral is added to a PC, a new device driver for that peripheral is installed on a storage device of the PC. Applications executing on the PC are able to use the new peripheral, through its driver. Because the applications access the peripheral through its S driver, they are isolated from the need for any change in their own functionality. The modular nature of PC software thus makes it easy to provide forward compatibility with new peripherals.

[0006] One alternate approach that has been adopted for use on PCs is that used by Adobe® for their Postscript® printer driver for PCs (Adobe and PostScript are trade marks registered in Australia in the name of Adobe Systems Incorporated). This driver provides forward compatibility with updated printer hardware without the replacement of the driver itself. This is achieved by providing a printer model specific configuration file (called a PPD) file) for each printer model. When printing, the PostScript printer driver reads the PPD file of the printer that it is printing to, and modifies the data that it sends to the printer by including model specific print commands from the PPD file. These model specific print commands provide support for the new features of the updated hardware.

[0007] This solution for PostScript printers is possible because PostScript printers implement the PostScript page description language, which is in fact a full programming language. PostScript print jobs are in fact PostScript programs. This allows the PostScript driver to delegate model specific data processing to the printer itself, by transferring PostScript program code from the PPD file to the printer.

[0008] The PostScript printer driver for PCs provides forward compatibility with updated printer hardware without the need to replace the printer driver. This is possible because the updated printer itself executes the program code required for its new features, so the program code of the printer driver does not need to change. This solution would not work for peripherals that are incapable of executing program code that is downloaded to them.

[0009] The interfacing of peripherals to game consoles is a relatively undeveloped art, which has previously had little need to address the issue of forward compatibility. The interfacing of peripherals to video game consoles is a very different matter to interfacing with PCs described above. Software for video game consoles is inherently of a monolithic and unchangeable nature, as opposed to the modular and upgradeable nature of PC software. This is caused by the very different natures of the two platforms.

[0010] PCs have large hard disk memories that allow a multitude of software modules (including applications, drivers, libraries and others) to be installed concurrently PC operating systems impose standardised interfaces on software modules, which allows interchangeability. As modules become obsolete, they can easily be replaced, without the need to replace other modules. Replacement can occur by installing the new module from a floppy disk, a CD, or downloading it from the Internet.

[0011] Game consoles typically have no hard disk memory, instead providing a CD-ROM/DVD-ROM drive or ROM cartridge slot that allows the console to run only one game application at a time. The game applications are monolithic in that all code and data is stored together in unchangeable media such as mask ROM modules, CDs or DVDs. Because the game applications are stored on unchangeable media, it is not possible to update them in order to provide compatibility with new hardware. Each game application operates in complete isolation, with no linkage to other software. No provision has been made for upgrading game applications with updated software modules, short of total replacement. The game console may provide some small amount of non-volatile memory, but this is typically intended only for the storage of configuration and high score data. It is generally not possible to modify game applications by linking them to executable code stored in this non-volatile memory The inflexibility of the game console environment has previously not been of great concern. The design of game console hardware has traditionally been “set in stone” for the lifetime of each specific platform. This removed the need for game applications to cope with updated hardware.

[0012] Given the current trend for the convergence of technologies, it is not surprising that the distinction and differences between PCs and game consoles are reducing. Game consoles now offer general-purpose hardware expansion busses, such as USB, which raises the prospect of interfacing PC peripherals to game consoles. The provision of hardware compatibility alone is not sufficient, as software compatibility is also required.

[0013] One solution for providing software compatibility is to equip the game console with a PC style operating system. The solution then becomes the same as for the PC. This approach has not met with much success, and the game console industry is generally avoiding it. Several reasons for this have been suggested, which include:

[0014] Many game developers are unwilling to make the sacrifice in performance that comes with conforming to OS interfaces;

[0015] Some operating systems provide interfaces that are awkward and cumbersome to use; and

[0016] Some operating systems require the game console manufacturer to pay a licensing fee.

[0017] As game console hardware approaches that of the PC, but in the absence of a PC style OS, the presently addressed issue becomes a problem. The USB interface allows game consoles to connect to a myriad of new peripherals, but there is no method for game applications to provide forward compatibility with peripherals released after the game.

SUMMARY OF THE INVENTION

[0018] It is an object of the present invention to substantially overcome, or at least ameliorate, one or more disadvantages of existing arrangements.

[0019] According to a first aspect of the invention, there is provided a method for generating a device driver for a device in an information processing apparatus that executes an application, wherein said device is connected to said information processing apparatus, said method comprising the steps of obtaining a first part of data to generate a device driver for said device, and generating said device driver for said device by using said first part of data and a second part of data stored in a memory, wherein said memory stores said application and said second part of data.

[0020] According to a second aspect of the invention, there is provided an information processing apparatus for executing an application and for generating a device driver for a device connected to said apparatus, said apparatus comprising:

[0021] a processor for obtaining a first part of data to generate a device driver for said device and generating said device driver for said device by using said first part of data and a second part of data stored in a memory, wherein said memory stores said application and said second part of data.

[0022] According to another aspect of the invention, there is provided a computer program to be executed in an information processing apparatus for executing an application and for generating a device driver for a device connected to said apparatus, said computer program comprising:

[0023] code for obtaining a first part of data to generate a device driver for said device; and

[0024] code for generating said device driver for said device by using said first part of data and a second part of data stored in a memory, wherein said memory stores said application and said second part of data.

[0025] According to another aspect of the invention, there is provided a method of providing forward compatibility of device driver code of an unchangeable application with a plurality of device models, wherein said application is not linked to other executable code, said method comprising the steps of:

[0026] including device model independent device driver code in said application;

[0027] determining a model of a device to which said application is desired to interface with;

[0028] reading model dependent configuration data for said model of said device; and

[0029] configuring said device driver code with said model dependent configuration data.

[0030] Other aspects of the invention are also disclosed.

BRIEF DESCRIPTION OF THE DRAWINGS

[0031] One or more embodiments of the present invention will now be described with reference to the drawings, in which:

[0032]FIG. 1 is a schematic block diagram of a gaming system;

[0033]FIG. 2 shows a structure of a Printer Characterisation File (PCF);

[0034]FIG. 3 is a flow diagram of the operation of the Device Model Independent Printer Driver (DMIPD);

[0035]FIG. 4 shows pseudo-code in the C programming language of a typical prior art printer driver; and

[0036]FIG. 5 shows pseudo-code in the C programming language for loading the PCF and configuring the print operation from the PCF.

DETAILED DESCRIPTION INCLUDING BEST MODE

[0037] Where reference is made in any one or more of the accompanying drawings to steps and/or features, which have the same reference numerals, those steps and/or features have for the purposes of this description the same function(s) or operation(s), unless the contrary intention appears.

[0038] The principles of the preferred method described herein have general applicability to peripheral devices attached to Computer Entertainment Systems or Set top Boxes. For ease of explanation, the steps of the preferred method are described with reference to a printer connected to a games console through a Universal Serial Bus (USB) port. However, it is not intended that the present invention be limited to the described method. For example, the invention may also have application to input devices such as a camera, and output devices such as a display device.

[0039] A schematic block diagram of a gaming system 100 is shown in FIG. 1, The gaming system 100 comprises a games console 101, input device(s) 102, such as a games controller and/or joystick, and output devices including a printer 115, speakers 117 and a display device 114.

[0040] The games console 101 typically includes at least one processor unit 105, a memory unit 106, for example formed from semiconductor random access memory (RAM) and read only memory (ROM), input/output (I/O) interfaces including a video interface 107, an I/O interface 113 for the input device(s) 102, and an I/O interface 108 for the printer 115.

[0041] A CD-ROM drive 112 is typically provided as a non-volatile source of data Alternatively, a DVD-ROM drive or a ROM cartridge slot may be provided as the nonvolatile source of data. A memory card 109 is also provided with non-volatile RAM, typically connected to the games console 101, and in particular connected directly to a interconnected bus 104. The components 105 to 113 of the games console 101, typically communicate via the interconnected bus 104 and in a manner which results in a conventional mode of operation of the gaming system 100 known to those in the relevant art.

[0042] Typically, an application program, which includes a game, is supplied to the user encoded on a CD-ROM. The CD-ROM is inserted into the CD-ROM drive 112, and read and controlled in its execution by the processor 105. Intermediate storage of the program may be accomplished using the semiconductor memory 106.

[0043] The application program is a monolithic, unchangeable application, loaded from the CD-ROM every time the application program is executed. This application program also includes a component for printing, which shall be referred to as the Device Model Independent Printer Driver (DMIPD). The DMIPD provides a printing API to the rest of the game application, and contains code that provides generic printing functionality. It contains no model specific printer code. This allows it to be device model independent.

[0044] However, for the DMIPD to successfully interchange data with the printer, it requires a mechanism to make the data compatible with specific models of printer. This includes appropriate control codes to control the printer, colour conversion, half toning, resolution and media sizes used.

[0045] Therefore, the DMIPD is logically structured into a non-changing code part and a table-driven code part. Code in the table-driven code part generates model-specific output commands. The table-driven code part thus introduces a level of independence to the code in the DMIPD.

[0046] The tables may be loaded separately, and are loaded at run time. The tables are provided in the form of a printer configuration file (PCF), which is generated for each model of printer or group of printers with the same characteristics. Key printer characteristics, such as the mapping from RGB colour-space to the printer's native colour-space, supported media types and print control commands are stored as tables of data. Each PCF contains a characterisation of its printer(s) that is detailed enough to allow the DMIPD to print to such a printer. FIG. 2 shows a proposed structure for the PCF. In a first field 301, the PCF for a specific printer model, or set of printer models, contains an array of strings that list printer model(s) that it characterises. In a second field 302, the PCF specifies the number of colour components that the printer 115 has. For example, a Cyan-Magenta-Yellow-Black printer has four colour components.

[0047] Field 303 provides a simplified example of a look-up table that converts colour information from the RGB colour space to the colour space of the printer's first colour component, for example Cyan. A number of subsequent fields 304 to 305 similarly provide colour conversion information for each of the remaining colour components of the printer 115. Colour conversion and colour reproduction are more complex than what is contained in fields 303 to 305.

[0048] As would be recognised by those skilled in the art, colour conversion and colour reproduction includes the steps of colour space conversion into a colorimetric colour space, under-colour removal, device characterisation, render intent handling and gamut mapping, followed by error diffusion or dithering. These processes are described in full in various publications of the International Color Consortium (ICC).

[0049] As colour conversion and colour reproduction can be broken up into two parts, namely a part containing tabulated data suitable for a specific printer, and a second part containing fixed algorithms that do not change from one model to the next, the data provided in fields 303 to 305 are sufficient for colour conversion and colour reproduction to be performed.

[0050] Field 306 specifies the printer controlling command sequence that is sent to the printer 115 at the start of a page, whereas field 307 specifies the printer controlling command sequence that is sent to the printer 115 at the end of the page. Field 308 specifies the printer controlling command sequence that is sent to the printer 115 at the start of a scan-line of image data of the first printer colour component. A number of subsequent fields 309 to 310 similarly provide printer controlling command sequences that are sent to the printer 115 at the start of scan-lines of image data of the remaining printer colour components.

[0051] Finally, field 311 specifies the printer controlling command sequence that is sent to the printer 115 at the end of a scan-line of image data.

[0052] At the time when an application program is placed on the CD/DVD, PCFs are included on the CD/DVD for each model of printer that is to be supported.

[0053] However, after the release of the application program, new models of printer will continue to be released. In order to provide compatibility of the application program with these new models, new PCFs are needed. These PCFs are generated for the new models of printers, and supplied to the user on a CD, along with a further application program that copies the PCFs to the memory card 109 of the gaming system 100, at a predetermined location. This predetermined location for PCFs is preferably in a directory named “PCFS” that resides in the root directory of the memory card 109.

[0054] During the execution of the application program, such as a game, printing may be initiated by the user. FIG. 3 shows a flow diagram of the operation of the DMIPD. Starting in step 201, the DMIPD is initialised by the application program.

[0055] The DMIPD determines what model of printer is connected to the console in step 202. This is done by obtaining a model name of the printer 115 plugged into the USB port 116 through the use of the USB printer class, which provides a mechanism for reading an IEEE-1284 identification string from a USB printer. This identification String specifies the printer model as a text string, in addition to other data such as manufacturer, serial number, etc.

[0056] With the model of the printer 115 known, the DMIPD attempts to obtain an S appropriate PCF for that model of printer. Accordingly, in step 203 the DMIPD selects the first PCF in the memory card 109, and determines whether this PCF matches the printer 115 that is presently connected to the gaming module 101 in step 204. Determining whether this PCF matches the printer is performed by comparing the printer identification string, which it obtained from the USB printer class, with the model strings in the first field 301 of the PCF.

[0057] If the PCF read from the memory card 109 does not match the printer 115, then the DMIPD determines in step 205 whether more PCFs are present on the memory card 109. With more PCFs available from the memory card 109, the DMIPD selects the next PCF in step 206 and returns to step 204 where it is determined whether this PCF matches the printer 115.

[0058] If an appropriate PCF is not available from the memory card 109, a point will be reached in the method 200 where step 205 determines that no more PCFs are available from the memory card 109.

[0059] The DMIPD proceeds to search for an appropriate PCF by searching amongst the inbuilt PCFs, which are located on the application program CD/DVD. In step 207 the DMIPD selects the first inbuilt PCF, and determines whether this PCF matches the printer 115 in step 208. If the inbuilt PCF does not match the printer 115, then the DMIPD determines in step 209 whether more inbuilt PCFs are present. With more inbuilt PCFs available, the DMIPD selects the next PCF in step 210 and returns to step 208 where it is determined whether this PCF matches the printer 115.

[0060] If an appropriate PCF is also not available from the inbuilt PCFs, then, from step 209, the method 200 will continue to step 211 where the user is prompted to provide an appropriate PCF. The user can do this by inserting the CD that came with the new printer 115, or by inserting another memory card 109 that contains the PCF.

[0061] In step 214, the DMIPD determines whether a new media, such as a CD or memory card has been inserted. If a new media has been inserted, then the DMIPD automatically scans any newly inserted media for the correct PCF in steps 212 and 213.

[0062] If it is determined that no new media has been inserted in step 214, then the user is provided with an option to cancel printing in step 215, in which case the method ends in step 219.

[0063] Once an appropriate PCF is found in steps 204, 208 or 213, then the PCF is loaded by the DMIPD in step 216.

[0064] In step 217 the DMIPD configures itself to use that PCF. In the preferred implementation, step 216 allocates a buffer of exactly the right size for the PCF data and then loads the PCF into it. Step 217 then assigns one or more data pointers to point to the data of the loaded PCF.

[0065]FIG. 4 shows pseudo-code in the C programming language of a typical prior art printer driver. In such a conventional printer driver, the data pointers point to fixed data. FIG. 5 shows pseudo-code in the C programming language for performing steps 216 and 217. In the DMIPD, the data pointers point to data that is loaded from the PCF With the DMIPD configured with the printer specific PCF data, the DMIPD is able to print to the printer 115 in step 218. After printing, the method ends in step 219.

[0066] Preferably, if the user supplies the PCF from the CD in step 214, then the DMIPD shall provide an option to the user to copy that PCF to one or more memory cards 109. Copying the PCF to memory card(s) will make future printing operations easier for the user, as they will not need to swap discs.

[0067] In summary, the disclosed method and apparatus provide forward compatibility of peripheral driver software with new peripheral hardware. This is achieved with no change to the executable code of the driver software, but only to non-executable configuration files. The method is highly applicable to video game console applications, because these consoles generally do not allow any changes to the executable code of their applications.

[0068] Although the PCF is read from the CD via CD-ROM drive 112 or memory card, the PCF can be read (uploaded) from a memory of a printer 115 via the USB port 116 or read (downloaded) from a memory of external apparatus such as a server on a computer network. Also a software program in accordance with the flow diagram shown in FIG. 3 may be executed by processor 105 (CPU) when a printing operation is required by a user. By executing the software program, the processor 105 uses USB Plug and Play to identify any available printer, chooses a PCF according to which printer is available and processes the PCF to generate a printer driver when a user selects a printing operation after starting the game application. For example, when the user selected a printing switch, an obtaining operation comprising steps 203 to 216 of the flow diagram of FIG. 3 may be executed by the processor 105.

[0069] The foregoing describes only one implementation of the present invention, and modifications and/or changes can be made thereto without departing from the scope and spirit of the invention, the implementation being illustrative and not restrictive. 

We claim:
 1. A method for generating a device driver for a device in an information processing apparatus that executes an application, wherein said device is connected to said information processing apparatus, said method comprising the steps of: obtaining a first part of data to generate a device driver for said device; and generating said device driver for said device by using said first part of data and a second part of data stored in a memory, wherein said memory stores said application and said second part of data.
 2. A method according to claim 1, wherein said first part of data is device model dependent configuration data.
 3. A method according to claim 2, wherein said device dependent configuration data is color conversion data to convert RGB color-space to a native color-space of said device.
 4. A method according to claim 1, wherein said second part of data is device model independent data.
 5. A method according to claim 1, wherein said generating step configures said first part of data with said second part of data.
 6. A method according to claim 1, wherein said application in said memory is an unchangeable application.
 7. A method according to claim 1, wherein said information processing apparatus is a game console.
 8. A method according to claim 6, wherein said unchangeable application is a game application executed on a game console.
 9. A method according to claim 1, further comprising the step of copying said first part of data into a memory card connected to said information processing apparatus.
 10. A method according to claim 1, wherein said first part of data is obtained from a disc for a printer.
 11. A method according to claim 1, wherein said part of data is obtained from a server over a network.
 12. A method according to claim 1, wherein said part of data is obtained from a memory in a printer.
 13. A method according to claim 1, further comprising the step of determining a model of a device to which said application is desired to interface with.
 14. A method according to claim 13, wherein said model of said device is determined through reading an identification string from said device.
 15. A method according to claim 13, wherein said generating step is executed after executing said determining step.
 16. A method according to claim 13, wherein said determining step determines whether said first part of data in a memory card matches said device, and upon determining that said first part of data in said memory card matches said device, loading said first part of data from said memory card.
 17. A method according to claim 16, upon determining that said first part of data in said memory card does not match said device, said determining step further determines whether said first part of data in a disk matches said device, and upon determining that said first part of data in said disk matches said device, loading said first part of data from said disk.
 18. A method according to claim 1, wherein said memory is a disc for a game.
 19. A method according to claim 1, wherein said device is connected to said information processing apparatus by means of a USB connection.
 20. A method according to claim 1, wherein said obtaining step is executed in the information apparatus when a printing operation is required by a user.
 21. An information processing apparatus for executing an application and for generating a device driver for a device connected to said apparatus, said apparatus comprising: a processor for obtaining a first part of data to generate a device driver for said device and generating said device driver for said device by using said first part of data and a second part of data stored in a memory, wherein said memory stores said application and said second part of data.
 22. A computer program to be executed in an information processing apparatus for executing an application and for generating a device driver for a device connected to said apparatus, said computer program comprising: code for obtaining a first part of data to generate a device driver for said device; and code for generating said device driver for said device by using said first part of data and a second part of data stored in a memory, wherein said memory stores said application and said second part of data.
 23. A computer program according to claim 22, wherein said computer program is stored in a memory medium to be connected to said apparatus.
 24. A method of providing forward compatibility of device driver code of an unchangeable application with a plurality of device models, wherein said application is not linked to other executable code, said method comprising the steps of: including device model independent device driver code in said application; determining a model of a device to which said application is desired to interface with; reading model dependent configuration data for said model of said device; and configuring said device driver code with said model dependent configuration data.
 25. A method according to claim 24, wherein said model of said device is determined through reading an identification string from said device.
 26. A method according to claim 24 or 25, wherein said unchangeable application is a game application executed on a game console.
 27. A method according to claim 26, wherein said model dependent configuration data is read from a memory card of said game console.
 28. An information processing apparatus for providing forward compatibility of device driver code of an unchangeable application with a plurality of device models, wherein said application is not linked to other executable code and said device driver code is device model independent said apparatus comprising: storage means for storing model dependent configuration data for a plurality of devices; means for determining a model of a device to which said application is desired to interface with; data reading means for reading model dependent configuration data of said model of said device; and means for configuring said device driver code with said model dependent configuration data.
 29. Apparatus according to claim 28, wherein said device is connected to said apparatus by means of a USB connection.
 30. Apparatus according to claim 28 or 29, wherein said model of said device is determined through reading an identification string from said device.
 31. Apparatus according to any one of claims 28, wherein said unchangeable application is a game application and said apparatus is a game console.
 32. Apparatus according to claim 31, wherein said storage means is a memory card of said game console.
 33. A computer program product, carried on a storage medium, for providing forward compatibility with a plurality of device models, wherein said computer program product is unchangeable and not linked to other executable code, said computer program product comprising: an application; model independent device driver code; code for determining a model of a device to which said application is desired to interface with; code for reading model dependent configuration data for said model of said device; and code for configuring said model independent device driver code with said model dependent configuration data. 